#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>

void sys_err(const char *str){
	perror(str);
	exit(1);
} 

int main(int argc, char *argv[])
{
	int fd[2];
	int ret, i;
	pid_t pid;

	ret = pipe(fd);
	if (ret == -1){
		sys_err("pipe error");
	}

	for (i = 0; i < 2; i++){  // 表达式2 出口，仅限父进程使用。
		pid = fork();
		if (pid == -1){
			sys_err("fork error");
		}
		if (pid == 0){        // 子进程，出口，子进程运行到这要退出，否则子进程还会再创建子进程
			break;
		}

	}
	if (i ==2){
		close(fd[0]);
		close(fd[1]);
		wait(NULL);
		wait(NULL);
	}else if (i == 0){    // 哥哥	
		close(fd[0]);
		dup2(fd[1], STDOUT_FILENO);
		execlp("ls", "ls", NULL);
		sys_err("execlp ls error");
	}else if (i == 1){    // 弟弟
		close(fd[1]);
		dup2(fd[0], STDIN_FILENO);
		execlp("wc", "wc", "-l", NULL);
		sys_err("execlp wc error");
	}

	return 0;
}
